package com.zkgl.rent.domain;

import java.math.BigDecimal;
import java.util.Date;

import org.springframework.data.annotation.Transient;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zkgl.common.annotation.Excel;
import com.zkgl.common.core.domain.BaseEntity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

/**
 * 租金账单对象 zk_rent_bill
 * 
 * @author macro
 * @date 2025-09-25
 */
@Data
@ToString
@EqualsAndHashCode(callSuper = false)
public class RentBill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 账单ID */
    private Long id;

    /** 对应合同ID */
    @Excel(name = "对应合同ID")
    private Long contractId;

    
    /** 对应合同ID */
    @Transient
    private String contractNo;

    /** 房东ID */
    @Excel(name = "房东ID")
    private Long landlordId;
    
    /** 所属房东名称 */
    @Transient
    private String landlordName;

    /** 租客ID */
    @Excel(name = "租客ID")
    private Long tenantId;
    
    /** 租客 */
    @Transient
    private String tenantName;

    /** 房源ID */
    @Excel(name = "房源ID")
    private Long propertyId;
    
    /** 房源ID */
    @Transient
    private String propertyName;

    /** 账单所属月份 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单所属月份", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billMonth;

    /** 应缴租金 */
    @Excel(name = "应缴租金")
    private BigDecimal rentAmount;

    /** 实缴金额 */
    @Excel(name = "实缴金额")
    private BigDecimal paidAmount;

    /** 应缴日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "应缴日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date dueDate;

    /** 支付状态 */
    @Excel(name = "支付状态")
    private String paymentStatus;

    /** 支付方式（如：微信、支付宝、银行转账） */
    @Excel(name = "支付方式", readConverterExp = "如=：微信、支付宝、银行转账")
    private String paymentMethod;

    /** 实际支付时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "实际支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

}
